<!--
 * @Description: 长度最小的子数组算法
 * @version: 0.0.0
 * @Author: 尹鹏孝
 * @Date: 2021-12-31 09:59:09
 * @LastEditors: 尹鹏孝
 * @LastEditTime: 2022-01-04 11:14:00
-->

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>长度最小的子数组</title>
</head>

<body>
    <script>
        /*   给定一个含有 n 个正整数的数组和一个正整数 s ，找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组，并返回其长度。如果不存在符合条件的子数组，返回 0。
          示例：
          输入：s = 7, nums = [2, 3, 1, 2, 4, 3] 输出：2 解释：子数组[4, 3] 是该条件下的长度最小的子数组。 */

        var minSumArrayLen = function (target, num) {
            const len = num.length;
            let l = r = sum = 0, res = len + 1;
            while (r < len) {
                sum += num[r++];
                while (sum >= target) {
                    res = res < r - l ? res : r - l;
                    sum -= num[l++];
                }
            }

            return res > len ? 0 : res;
        }

    </script>

</body>

</html>